This file describes the layout of files for setting up and running the
Red Hat installer.  It does not describe the full generality of
possible layouts; it describes primarily the layout used with the
installer on powermacs.

When the installer runs, it needs to find a directory called "RedHat"
with subdirectories called "RPMS" and "base".  It can access these
directories and files on a local hard disk or CDROM or via FTP or
NFS.  The RPMS directory contains RPM files for all the packages which
can be installed.  The base directory contains 4 files:

* skeleton.cgz - a gzipped cpio file, containing stuff which is
  installed by gunzip/cpio before most of the RPMs are installed.
* comps - the "components" file, which describes groups of RPMs.
* hdlist - a list of the RPM headers, generated by `genhdlist'
  program.
* uglist - another file generated by genhdlist.

The comps file is used to structure the list of RPMs into groups that
the user can selectively install or not.  The comps file is structured
as a list of groups, each of which starts with a header line, has one
package name per line after that, and ends with a blank line.  The
header line has a "0" or "1" followed by a space and the name of the
group.  "1" means that the group is to be installed without asking the
user, "0" means to ask.  The special group *beforeskel* gets installed
before skeleton.cgz gets unpacked; all other RPMs in selected groups
get installed in alphabetical order after skeleton.cgz is unpacked.

The install process on powermacs (those that can run the native
kernel) starts by getting Open Firmware to boot an XCOFF image from
floppy or ethernet.  This image contains .text, .data and .bss
sections for a small second-stage loader, a section called "image"
containing a gzipped kernel image, and a section called "initrd"
containing an initialized ramdisk.

The second-stage loader finds these sections in memory and copies the
initrd section up to the end of the first 8MB of memory, out of the
way.  Then it decompresses the kernel image and jumps to it, passing
it the address where it put the initrd section and its size as
parameters.  These parameters are used to set the kernel variables
initrd_start and initrd_end.

The kernel starts, decompresses the initial ramdisk into a standard
ramdisk, and uses it as the root device.  This ramdisk has a special
/sbin/init which sets up a few things and then runs install.  The
install program is broken into two pieces, install and install2, for
the sake of the ix86 installer, which can only fit install on the boot
floppy.  I put the two back into one executable which can be invoked
as either install or install2.  Install puts up the first 4 screens or
so and then invokes install2.

I use a 3MB ramdisk with about 2MB used.  This, together with a
compressed vmlinux kernel image and the second-stage loader, comes to
just under 1.4MB, and so just fits onto a Mac-format floppy.
